http://www.linux-user.de/ausgabe/2002/04/073-ext3/ext3.html?print=y

Umstieg auf das Ext3-Dateisystem

Das aktuelle Journal

von Martin Loschwitz
(Auszug !)

Schritt 1: Vorbereitungen

Angenommen, Sie haben eine 40 GByte große Festplatte /dev/hda, die in zwei Partitionen unterteilt ist: /dev/hda1 und /dev/hda2. /dev/hda2 sei ein Ext2fs-Dateisystem, welches ihr Root-Dateisystem ("/") enthält. Welches Dateisystem Ihr aktuelles Linux-System benutzt, können Sie über das Kommando mount überprüfen:

 $ mount
/dev/hda2 on / type ext2 (rw,errors=remount-ro)
proc on /proc type proc (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)

Die Einträge für proc und devpts sind uninteressant, wichtig ist lediglich der Eintrag, der verrät, dass / ein Ext2fs-Dateisystem enthält. /dev/hda2 soll nun auf Ext3fs umgestellt werden. Dazu müssen Sie zunächst überprüfen, ob der laufende Kernel Ext3fs unterstützt. Dies stellen Sie sicher, indem Sie auf der Konsole das Kommando

 cat /proc/filesystems

ausführen. Wenn bei der Ausgabe dieses Kommandos eine Zeile "ext3" erscheint, ist Ihr Kernel für den Einsatz mit Ext3fs gerüstet, und Sie können mit Schritt 3 fortfahren; ansonsten geht es weiter zu Schritt 2.

Schritt 2: Ein neuer Kernel

Kennt der laufende Kernel Ext3fs noch nicht, muss ein neuer Kernel erzeugt werden. Verwenden Sie hierzu die Sourcen des aktuellen Linux-Kernels 2.4.17 (auf der Heft-CD im Verzeichnis LinuxUser/kernel/). Sollte es bei Erscheinen dieser Ausgabe bereits eine neuere Version geben, können Sie diese mit wget (einem Download-Manager, der bei den meisten Distributionen zum Standard-Repertoire gehört) von [5] herunterladen. Konfigurieren und kompilieren Sie den Kernel danach, wie beispielsweise in der Anleitung im LinuxUser 03/2001 auf Seite 86 beschrieben. Wichtig ist hierbei, dass Sie den Eintrag Prompt for development and/or incomplete code/drivers unter Code maturity level options und den Eintrag Ext3 journalling file system support (EXPERIMENTAL) unter File systems aktivieren. Konfigurieren Sie Ext3fs-Support nicht als Modul - schließlich kann der Kernel Module erst laden, wenn das Root-Dateisystem gemountet ist. Benutzer von Debian Potato sollten sich auch [4] genauer ansehen.


Abb. 1: Das Untermenu "File systems" bei der Kernel-Konfiguration

Schritt 3: die Umstellung

Achtung! Sichern Sie Ihre Daten, bevor Sie Veränderungen am Dateisystem vornehmen! Nachdem Sie sichergestellt haben, dass Ihr Kernel mit dem Ext3fs-Dateisystem umgehen kann, können Sie mit der Umstellung von /dev/hda2 auf Ext3fs beginnen. Um das Journal auf der Partition mit dem Root-Dateisystem zu initialisieren, benötigen Sie eine aktuelle Version des Programms tune2fs. Es gehört zum Paket e2fsprogs und wird somit bei jeder aktuellen Distribution standardmäßig mitinstalliert. Benutzer von Debian Potato müssen sich eine aktuelle Version von tune2fs besorgen - die Version in Potato beherrscht die Option "-j" noch nicht. Sourcen der e2fsprogs-Version 1.26 finden sich auch auf der Heft-CD im Verzeichnis LinuxUser/kernel/. Um das Dateisystem auf der /-Partition von Ext2fs auf Ext3fs umzustellen, wechseln Sie zunächst in den sogenannten "Single User Mode". Dieser dient dem Administrator root zum Durchführen von Wartungsarbeiten am System, die während des normalen Betriebs nicht machbar wären:

 init 1

Legen Sie nun das Journal auf dem Root-Dateisystem an:

 tune2fs -j /dev/hda2

Ob dies geklappt hat, sehen Sie an einer Meldung wie dieser:

 <0>minerva[1002]:~# tune2fs -j /dev/hda2
tune2fs 1.25 (20-Sep-2001)
Creating journal inode: done
This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

Schritt 4: Abschließende Maßnahmen

Nachdem das Journal der /-Partition initialisiert wurde, müssen noch einige Dinge erledigt werden, damit Sie die Vorzüge vom Ext3fs genießen können. Zuerst müssen Sie die Datei /etc/fstab editieren. Dort sollte ein Eintrag zu finden sein, der so ähnlich wie dieser aussieht:

 /dev/hda2  /  ext2  defaults,errors=remount-ro  0 1

/dev/hda2 bezeichnet den Namen des Laufwerks, / den Mountpoint und ext2 den Dateisystemtyp; im vierten Feld werden die Optionen angegeben, mit denen das Laufwerk gemountet wird, die vorletzte Zahl ist für das Filesystem-Tool dump gedacht (hier uninteressant), und die letzte Zahl gibt an, in welcher Reihenfolge die Dateisysteme von fsck "abgearbeitet" werden. Für eine Benutzung mit Ext3fs müssen Sie diese Zeile wie folgt ändern:

 /dev/hda2  /  auto  defaults,errors=remount-ro  0 1


Mountpoint: Als Mountpoint wird eine Stelle in einem Linux-Dateibaum bezeichnet, an der ein Dateisystem (z. B. Festplatten-Partition, Diskette, CD-ROM) in das Linux-System eingebunden wird.

Als Dateisystemtyp wird hier "auto" verwendet, damit es möglich bleibt, das Dateisystem mit Kerneln zu mounten, die nur mit dem Ext2-Dateisystem umgehen können. Unter normalen Bedingungen wird der Kernel, sofern er für die Benutzung mit Ext3fs konfiguriert ist, das Dateisystem immer als solches erkennen und entsprechend mounten.

Ein Feature vom Ext2fs ist es, dass es fsck nach 180 Tagen oder nach jedem 20. Mount-Vorgang automatisch veranlasst, das Dateisystem auf seine Konsistenz zu überprüfen. Dieser Mechanismus sollte bei einem Ext3-Dateisystem zwar nicht völlig deaktiviert werden, Sie können den zeitlichen Abstand zwischen den einzelnen Checks jedoch deutlich hochsetzen. Verwenden Sie dazu den folgenden Befehl:

 tune2fs -i 180 -c 40 /dev/hda2

Nachdem Sie alle oben genannten Schritte erledigt haben, wird noch ein Neustart des Rechners mittels reboot fällig. Dabei sollte der Kernel das Dateisystem / dann als Ext3fs mounten - ob dies geklappt hat, sehen Sie an einer Boot-Meldung der folgenden Form:

 EXT3 FS 2.4-0.9.17, 10 Jan 2002 on ide0(3,1), internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting. Commit interval 5 seconds

Das Journal wieder loswerden

Sollte Ihnen Ext3fs nicht zusagen, so ist es problemlos möglich, wieder auf Ext2fs umzusteigen: Um ein Downgrade zu bewerkstelligen, müssen Sie die Schritte analog zur Umstellung von Ext2fs auf Ext3fs ausführen, jedoch in umgekehrter Reihenfolge.

Setzen Sie zuerst die Werte für den automatischen Dateisystem-Check wieder auf die Standardwerte zurück:

 tune2fs -c 20 -i 180

Ändern Sie dann die Einträge in der Datei /etc/fstab auf Ext2fs zurück: Aus

 /dev/hda2  /  auto  defaults,errors=remount-ro  0 1

wird wieder

 /dev/hda2  /  ext2  defaults,errors=remount-ro  0 1

Wechseln Sie mit init 1 in den Single User Mode und beenden Sie mit killall5 alle laufenden Prozesse:

 /sbin/killall5 -15
/sbin/killall5 -9

Mounten Sie als nächstes das Root-Dateisystem "read-only", also so, dass das Dateisystem nur gelesen und nicht geschrieben werden darf; es können dann keine neuen Dateien mehr angelegt werden, und bestehende Dateien können nicht verändert werden. Der nötige Befehl ist:

 mount -o remount,ro /

Nun können Sie das Journal-Flag vom Ext3fs-Dateisystem entfernen und es so wieder zu einem Ext2fs-System machen:

 tune2fs -O^has_journal /dev/hda2

Als letztes wird noch ein Neustart des Rechners fällig. Danach sollte der Kernel / wieder als Ext2fs-Dateisystem mounten. (hge)

Infos

 
[1] http://www.heise.de/ct/99/25/034/: Interview der c't mit Alan Cox
[2] http://www.ReiserFS.org: Die Projektpage von ReiserFS
[3] http://oss.sgi.com/projects/xfs: SGIs XFS
[4] http://www.fs.tum.de/~bunk/kernel-24.html: Linux 2.4 unter Debian GNU/Linux 2.2 (Potato)
[5] http://ftp2.de.kernel.org/pub/linux/kernel/v2.4/linux-2.4.17.tar.gz: Linux-Kernel 2.4.17
[6] http://oss.software.ibm.com/developerworks/opensource/jfs/: IBMs JFS
 

Der Autor

Martin Loschwitz ist Schüler aus Viersen und kann das Wort "Dateisystem" für die nächsten zwei Wochen nicht mehr hören ;-) Zu erreichen ist er per E-Mail unter madkiss@madkiss.de oder im IRCnet als "Madkiss".